package be.bejug.setris


/**
 * This trait defines the interface a GUI implementation must implement.
 *
 */
trait SetrisGui{
	/**
	 * Set the Game controler
	 */
	def	setGame(game:SetrisGame):Unit

	/**
	 * Show level to the user
	 */
	def	setLevel(level:Int):Unit

	/**
	 * Show playfield to the user
	 */
	def	setPlayField(playField:TileGrid):Unit

	/**
	 * Show the score to the user
	 */
	def	setScore(score:Int):Unit

	/**
	 * Show the user the game is over (or not)
	 */
	def	setGameOver(over:Boolean):Unit

	/**
	 * Show the user the next block that will fall down
	 */
	def	setNextBlock(block:TileGrid):Unit

	/**
	 * The frame rate for this GUI.
	 * This defines the number of ticks per second
	 */
	val	frameRate:Int

	/**
	 * The Width and Height for the playfield
	 */
	val	playFieldDimension:(Int,Int)
}